import os
import shutil


def copy_common_files(dir_a, dir_b, dir_c):
    """
    查找 A 目录中的文件名，在 B 目录中寻找同名文件，
    若存在，则从 B 复制到 C 目录。
    """
    # 确保 C 目录存在
    os.makedirs(dir_c, exist_ok=True)

    # 获取 A 目录中所有文件的文件名（不含路径）
    files_in_a = set(os.listdir(dir_a))

    # 遍历 B 目录中的文件
    for filename in os.listdir(dir_b):
        file_path_b = os.path.join(dir_b, filename)

        # 确保是文件而不是子目录
        if os.path.isfile(file_path_b) and filename in files_in_a:
            src = file_path_b
            dst = os.path.join(dir_c, filename)
            shutil.copy2(src, dst)  # copy2 会保留元数据
            print(f"已复制: {filename}")


# 使用示例
if __name__ == "__main__":
    dir_a = r"D:\TestPic\自训练模型测试-未戴头盔\0923-抽帧-320\错误"  # A目录路径
    dir_b = r"D:\TestPic\自训练模型测试-未戴头盔\0923-抽帧-320\raw_frames-0923-抽帧-320"  # B目录路径
    dir_c = r"D:\TestPic\自训练模型测试-未戴头盔\0923-抽帧-320\错误-raw"  # C目录路径（目标目录）

    copy_common_files(dir_a, dir_b, dir_c)